﻿/* PC INpact Toolkit for Chrome™

	PC INpact Toolkit for Chrome™ est une extension destinée au navigateur Chrome permettant d'accéder à de nombreuses fonctionnalités de PC INpact.
	Vous y retrouverez les actualités, brèves, calendriers du site, mais aussi les comptes Twitter de l'équipe ou des fonctionnalités de recherche.
	Des notifications peuvent aussi être affichées sur votre bureau, à chaque nouvelle publication sur le site (actualités, dossiers, tests).

	Main author : LEGRAND David
	Mail : david@pcinpact.com
	
	Google Code Project : http://pci.im/code-pci-chrome 
	Forum : http://pci.im/forum-pci-chrome
	
    This file is part of PC INpact Toolkit for Chrome™.

    PC INpact Toolkit for Chrome™ is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    PC INpact Toolkit for Chrome™ is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with PC INpact Toolkit for Chrome™.  If not, see <http://www.gnu.org/licenses/>. 

    You're not allowed to use PC INpact Toolkit for Chrome™ name or logo without permission 

	Loading GIF : http://www.ajaxload.info/

 */

// La fonction qui check s'il y a de nouvelles brèves
function check_breves()
{

	// On définit l'URL de la page contenant l'ensemble des brèves
	var url = "http://www.pcinpact.com/breves/";
	
	// On récupère la page de brève enregistrée et celle en ligne
	var last_breves = window.localStorage.getItem('breves_s');
	var new_breves = get_breves(ext_req(url), url);
	
	// Si last_breves n'a jamais été définit, on récupère la dernière valeur connue
	if (last_breves == null) last_breves == new_breves;
	
	/////////////////////////////////////////
	//
	//	Zone d'entrainement
	//	
	//	last_breves = '';
	//
	/////////////////////////////////////////
	
	// Si les brèves en ligne sont différentes de celles que l'on a enregistré
	if (new_breves != last_breves)
	{
		// On enregistre l'info dans une variable
		window.localStorage.setItem('breves_new', 1);
		
		// On lance une notification
		notify_txt('/pics/cible-pci-128.png', "Alerte - Brèves", "De nouvelles brèves viennent d'être publiées");
		
		// On met à jour le badge
		badge_update('news');
	}
	// Sinon on indique qu'aucune nouvelle brève n'est disponible
	else 
	{
		window.localStorage.setItem('breves_new', 0);
		
		// On met à jour le badge
		badge_update('news');
	}
}

// La fonction qui récupère le flux de brèves
function get_breves(responseText, url) 
{
	// On parse le résultat via indexOf et substring, pour extraire le bloc désiré
	var result = extract(responseText, "<ul id=\"all_breves", '<div id=\"more_b\">', 0)

	// On nettoie le code des styles appliqués
	result = result.replace(/style=\"list-style-type:none;margin:0;padding:0;clear:both\"/gi, '');
	result = result.replace(/style=\"padding:4px; \"/gi, '');
	result = result.replace(/style=\"font-size:9px;\"/gi, '');

	// On créé un bloc qui redirige vers l'ensemble des brèves
	var bloc_all_breves = "<a href='" + url + "' target='_blank'>Accéder l'ensemble des brèves de PC INpact</a></h1></div>";

	// On travaille la mise en page du résultat
	result = "<div class='titre_breves'>" + bloc_all_breves + "<div class='conteneur_breves'>" + result + "</div>" + "<div class='titre_breves_last'>" + bloc_all_breves;
	
	// On enregistre le résultat pour la vérification de nouvelles brèves
	window.localStorage.setItem('breves_s', result);
	
	// On renvoie le résultat
	return result;
}

//La fonction permettant d'afficher les brèves
function breves() 
{
	window.localStorage.setItem('last_rub_s', 'breves');
	modify_body_size('scroll');
	document.getElementById('ss_menu').innerHTML = '';
	
	// On récupère un élément temporel
	var d = new Date();
	
	// Si le cache est supérieur au délai fixé, ou qu'il y a de nouvelles brèves en attente, on effectue la requête
	if ((d.getTime() - window.localStorage.getItem('breves_cache_time') > window.localStorage.getItem('cache_delay') * 60 * 1000) || window.localStorage.getItem('breves_new') == 1)
	{
		// On RaZ l'indication de nouvelles brèves
		window.localStorage.setItem('breves_new', 0);
		
		// On met à jour le badge
		badge_update('news');
		
			// On déclare l'url des brèves
		var url = "http://www.pcinpact.com/breves/";
		
		// On effectue la requête
		var xmlhttp = new XMLHttpRequest();
		xmlhttp.onreadystatechange=function()
		{
			// si la requête est OK
			if(xmlhttp.readyState==4)
			{
				// Si la réponse n'est pas vide
				if(!xmlhttp.responseText=="")
				{
					// On récupère le résultat
					var result = get_breves(xmlhttp.responseText, url);
					
					// On affiche le résultat
					document.getElementById('contenu').innerHTML = result;
					
					// On met le résultat en cache
					window.localStorage.setItem('breves_cache', result);
					
					// On enregistre l'heure
					var cache_time = new Date();
					window.localStorage.setItem('breves_cache_time', cache_time.getTime());
				}
			}
			else 
			{
				// Sinon on affiche le texte de chargement
				document.getElementById("contenu").innerHTML = charg_text;
			}
		}
		
		// On envoie la requête, ici, on attend le résultat afin de pouvoir l'envoyer, d'où le "false"
		xmlhttp.open("GET",url,true);
		xmlhttp.send("");
	}
	// Sinon, on affiche la version en cache
	else document.getElementById("contenu").innerHTML = window.localStorage.getItem('breves_cache');
}
